package chwgigs;

public class J01_Fundamentals {

	//OOP 프로그램을 개발할때
	//현실세계와 같은 객체 모델을 만들어야 함
	//예를 들어 급여 프로그램은
	//직원 세금 회사 객체등이 있어야 함
	
	//하지만 자바에서 객체는 유일한 데이터 형이아님
	//기본 자료형8개
	
	//처음 6개의 <기본형데이터타입>은 숫자를 나타냄
	//byte, short, int(기본정수), long(큰정수), 
	//float(실수), double(기본실수)
	
	// 자연수,정수: byte, short, int, long
	// 소수점이 있는 정수 : float ,double
	
	// 나머지 2개 기본 자료형
	//char: 단일 문자 저장시 사용
	//boolean: 논리값(참/ 거짓 ) 저장시 사용

	//프로그램작성시 사용하는 자료의 크기에 따라 
	//위에 기본자료형(8가지)을 적절히 선택하여야 함
	
	//<변수 variable>
	//데이터가 저장될 장소를 의미
	//자바는 엄격하게 자료형을 검사하는 언어임
	//따라서 모든 변수는 자료형이 선언되어야 함
	//각각의 변수를 구분하기 위해 변수에 이름을 부여
	//이것을 변수명,또는 식별자identifier라고 한다.
	
	//<변수 명명법>
	//1. 식별자는 자바 문자와 자바 숫자로만 구성, 길이는 무제한
	//    단, 식별자의 첫 글자는 문자여야 함
	//2.식별자는 자바의 예약어, boolean 리터럴
	//   null 리터럴이면 안됨 (true/false/ null 사용불가)
	//3.식별자는 특정 범위 내에서 유일해야 함
	//4.식별자는 대/ 소문자를 구분함 
	
	// <자바 문자와 자바 숫자>
	// 자바문자는 ASCII 문자집함의 소/대 영문자
	// 달러($) 문자와 밑줄(_) 문자를 의미
	//자바 숫자는 ASCII 문자의 0-9를 의미
	
	//리터럴literal
	//가끔 프로그램상에서 변수에 값을 할당 할 때가 있음
	//예를 들어 int에 숫자 '2'나 char에 문자 'a' 처럼
	//변수에 값을 할당할 때 이 값은 컴파일러가 
	//이해할 수 있는 형식으로 표현해야 함
	//이러한 '소스코드 상의 값 표현법'을 리터럴이라 함
	// 종류는 기본자료형(정수/실수/문자/논리값) 리터럴,
	// 문자열 String 리터럴 , 널null 문자 리터럴
	
	public static void main(String[] args) {
	//변수 선언 및 값 할당
		//[자료형][변수명]=[리터럴];
		
	short birthyear=1982;
	byte b=127;
	int c = 1982;
	float pi=3.14F;
	// F를 대문자로 표기하는 것이 좋음
	long jumin=19827212120856L;
	//L을 대문자로 표기하는 것이 좋음
	
	
    char _1st_name='채', _2nd_name='희',
    	  _3rd_name='원'; 
    
   // 동일한 자료형을 가지는 변수는 
    //,를 이용해ㅑ서 다중 변수 선언이 가능
    //하지만, 가독성이 떨어지기 때문에 비추
	
	//char _1st_name='채';
	//char _2nd_name='희';
	//char _3rd_name='원';
    
    boolean isMarried=false;
    boolean getMarried=false;
			
	
   char code1='\uC790';  //유니코드 
   	char code2='\uBC14';
   	char symbol1='\u263A';  //기호
   	char symbol2='\u2639';
   	
   	//유니코드 Unicode 란?
   	// 전통적으로 영어권 나라들은 알파벳을 표기하기 
   	//위해 ASCII 문자 집합을 사용
   	//ASCII 문자집합에서 각 문자는 7비트를 사용한다.
   	//총128개의 문자를 나타낼 수 있음 
    // 유럽권 문자표기를 위해 
   	//확장 ASCII문자집합을 사용함
   	// 그리하여 총 256개의 문자를 사용하게 됨 
   	// 하지만 동양 문화권에 속한 나라들은 또 다른 문자 집합을 사용함 . 그리고 8비트로 수천개의 문자를 나타내기에는 무리가 있음
   	//  한국에서 사용하는 문자 집합 중  EUC-KR 은 8비트 한글 완성형 문자 인코딩 ISP-2022-KR이라고도 불림 . 
   	//사용빈도가 높은 2350자만을 채택
   	
   	//기존에 부족했던 완성형 한글을 보완하기 위해 Window95부터 CP949(MS949)라는 문자 인코딩을 
   	//확장 완성형이라는 명칭으로 도입
   	//KS C 5601-1987 이라고 불리기도 함 .현대의 모든 한글을 수용하게 됨 
   	
   	//유니코드( Unicode) 는 유니코드 컨소시움이라는 
   	//비영리 단체에 의해 개발된 문자집합
   	//전 세계 언어의 문자를 하나의 문자 집합에 포함하려 했다
   	//유니코드에 고유 번호로 정확히 한 문자를 표시 할 수 있게 됨 
   	
   	//UTF-8
   	// 바이트 가변길이 인코딩으로 
   	//유니코드 문자를 나타냄
   	//즉 영어는 1바이트 한글은 32 바이트를 이용함
   	// 대부분의 브라우저는 UTF-8 인코딩을 지원함 
   	
   	
   	System.out.println(code1);
   	System.out.println(code2);
   	System.out.println(symbol1);
   	System.out.println(symbol2);
   	
   
   	
   	//변수 값 출력
    // 자바 표준 출력문 System.out.println()사용
   
   	System.out.println(birthyear);
    System.out.println(pi);
    System.out.println(jumin);
    System.out.println(_1st_name);
    System.out.println( _2nd_name);
    System.out.println( _3rd_name);
    System.out.println(isMarried);
    System.out.println(getMarried);
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    		
    		
    		
  	}

}
